package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import vista.VentanaAgregarProducto;
import modelo.Producto;
import modelo.Drogueria;

public class ControladorAgregarProducto implements ActionListener {

	private VentanaAgregarProducto ventanaAgregarProducto;
	private Drogueria drogueria;
	private int posi;
	private int line;

	public ControladorAgregarProducto(Drogueria dro) {

		super();

		ventanaAgregarProducto = new VentanaAgregarProducto();
		ventanaAgregarProducto.setLocationRelativeTo(null);
		ventanaAgregarProducto.setVisible(true);
		ventanaAgregarProducto.agregarListener(this);
		drogueria = dro;
		ventanaAgregarProducto.setLineasComboBox(drogueria.getNombreComboBox());
		ventanaAgregarProducto.inhabilitarExistencia();
	}

	/*****************************************************************************/

	public void actionPerformed(ActionEvent ae) {
		if (ae.getActionCommand().equalsIgnoreCase("Registrar")) {
			agregarProducto();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Modificar")) {
			modificarProducto();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Buscar")) {
			ventanaAgregarProducto.habilitarExistencia();
			buscarProducto();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Eliminar")) {
			eliminarProducto();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Cancelar")) {
			ventanaAgregarProducto.limpiarCampos();
			ventanaAgregarProducto.habilitar();
			ventanaAgregarProducto.setLineasComboBox(drogueria
					.getNombreComboBox());
		}
		if (ae.getActionCommand().equalsIgnoreCase("Salir")) {

			ventanaAgregarProducto.dispose();
		}

	}

	/*********************************************************************************************/

	public void agregarProducto() {

		if (ventanaAgregarProducto.validar() == true) {

			String codigo = ventanaAgregarProducto.getCodigo();
			String descripcion = ventanaAgregarProducto.getDescripcion();
			int existencia = 0;
			String linea = ventanaAgregarProducto.getLinea();

			int pos = drogueria.buscarPosicionLinea(linea);
			Producto producto = new Producto(codigo, descripcion, existencia);

			drogueria.incluirProducto(pos, producto);
			ventanaAgregarProducto.mostrarMensaje("El Registro ha sido exitoso!");
			

			ventanaAgregarProducto.limpiarCampos();
			ventanaAgregarProducto.habilitar();
			ventanaAgregarProducto.mostrarMensaje(""+ drogueria.getLinea(pos).cantProductos());
					

		}

		ventanaAgregarProducto.setLineasComboBox(drogueria.getNombreComboBox());

	}

	/************************************************************************************************/

	public void buscarProducto() {
		String codigo = ventanaAgregarProducto.getCodigo();
		if (!codigo.equals("")) {
			int pos = drogueria.buscarProduto(codigo);
			int lin = drogueria.buscarLineaPorProducto(codigo);

			if (pos != -1) {
				ventanaAgregarProducto.setCodigo(drogueria
						.getProducto(lin, pos).getCodigo());
				ventanaAgregarProducto.setDescripcion(drogueria.getProducto(lin, pos).getDescripcion());
				ventanaAgregarProducto.setExistencia(drogueria.getProducto(lin,pos).getExistencia());
				ventanaAgregarProducto.setLinea(drogueria.getLinea(lin).getDescripcion());
				this.posi = pos;
				this.line = lin;
				ventanaAgregarProducto.inhabilitar();
				ventanaAgregarProducto.inhabilitarExistencia();
			} else
				ventanaAgregarProducto.mostrarMensaje("Producto no registrado");
		} else {
			ventanaAgregarProducto.mostrarMensaje("Por favor ingrese codigo");
		}
	}

	public void eliminarProducto() {
		if (drogueria.getProducto(line, posi).getExistencia() == 0) {
			drogueria.eliminarProducto(line, posi);
			ventanaAgregarProducto.limpiarCampos();
			ventanaAgregarProducto.mostrarMensaje("El Producto ha sido eliminado!");
			ventanaAgregarProducto.habilitar();
			ventanaAgregarProducto.inhabilitarExistencia();
			ventanaAgregarProducto.setLineasComboBox(drogueria.getNombreComboBox());
					
		} else
			ventanaAgregarProducto.mostrarMensaje("No se puede eliminar este producto. Hay productos almacenados");
	    	ventanaAgregarProducto.setLineasComboBox(drogueria.getNombreComboBox());
	}

	/******************************************************************/

	public void modificarProducto() {

		try {

			String descripcion = ventanaAgregarProducto.getDescripcion();

			drogueria.getProducto(line, posi).setDescripcion(descripcion);

			ventanaAgregarProducto.mostrarMensaje("Modificacion exitosa");

			ventanaAgregarProducto.limpiarCampos();
			ventanaAgregarProducto.habilitar();
			ventanaAgregarProducto.inhabilitarExistencia();
		} catch (Exception e) {
			// Mensaje de Dialogo en caso de que ocurra cualquier otra excepcion
			ventanaAgregarProducto.mostrarMensaje("Deben ser validos");
		}
		    ventanaAgregarProducto.setLineasComboBox(drogueria.getNombreComboBox());

	}

}